package com.xuecheng.content.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.content.model.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.content.entity.CourseBase;

import java.util.Map;


/**
 * <p>
 * 课程基本信息 服务类
 * </p>
 *
 * @author xuan
 * @since 2021-12-07
 */
public interface CourseBaseService extends IService<CourseBase> {

    /**
     *分页查询方法
     * @param params 前端传回数据
     * @param model   基本信息
     * @param aLong    id
     * @return      DTO类型数据
     */
    PageVO<CourseBaseDTO> queryCourseList(PageRequestParams params, QueryCourseModel model, Long aLong);


    /**
     *增加课程方法
     * @param
     * @return
     */
    CourseBaseDTO createCourseBase(CourseBaseDTO dto);

    /**
     * 根据id查询课程基本信息
     * @param courseBaseId id
     * @param companyId 公司id
     * @return  CourseBaseDTO
     */
    CourseBaseDTO getByCourseId(Long courseBaseId , Long companyId);

    /**
     * 修改课程基本数据
     * @param dto  CourseBaseDTO
     * @return
     */
    CourseBaseDTO modifyCourseBase(CourseBaseDTO dto);

    /**
     * 根据id删除课程基本信息
     * @param courseBaseId  基本信息id
     * @param companyId 公司id
     * @return
     */
    void removeCourseBase(Long courseBaseId , Long companyId);

    /**
     * 根据课程Id提交课程信息
     * @param courseBaseId courseBaseId
     * @param companyId companyId
     */
    void commitCourseBase(Long courseBaseId, Long companyId);

    /**
     * 课程审核
     * @param dto dto
     */
    void approve (CourseBaseDTO dto);

    /**课程预览
     *
     * @param courseId 课程id
     * @param companyId  公司id
     * @return map 数据模型
     */
    Map<String, Object> previewCourse(Long courseId, Long companyId);

}
